#!/bin/bash
# 文件名：how-many-commands.sh
# 功能：统计当前 Linux 系统中可用的命令数量（包括外部命令和 Shell 内建命令）

# 方法 1：统计 PATH 目录下的可执行文件数
count_executables_in_path() {
    local count=0
    IFS=: read -ra dirs <<< "$PATH"  # 解析 $PATH 变量，按 ":" 分割

    for dir in "${dirs[@]}"; do
        # 确保目录存在并且可访问
        if [[ -d "$dir" && -r "$dir" ]]; then
            count=$((count + $(find "$dir" -maxdepth 1 -type f -executable 2>/dev/null | wc -l)))
        fi
    done

    echo "$count"
}

# 方法 2：统计所有可用命令，包括 shell 内建命令
count_all_commands() {
    compgen -c | sort -u | wc -l
}

# 计算可执行文件的总数
executables=$(count_executables_in_path)
all_commands=$(count_all_commands)

# 输出结果
echo "🔹 仅统计 PATH 目录下的可执行文件数量： $executables"
echo "🔹 包括 Shell 内建命令的总命令数量： $all_commands"

